package com.smartleanx.module.hrm.service.salary;


import com.alibaba.fastjson2.JSONObject;
import com.github.pagehelper.PageInfo;
import com.smartleanx.module.hrm.dal.dataobject.dingDing.DingAttendanceClasses;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author mybatis-plus
 * @since 2025-01-10
 */
public interface HrmSalaryRecordService {


    List<JSONObject> postLevelBySelect();

    void generateSalaryRecord(Integer type, List<Integer> employeeId, String date);

    void  initSystemColumnTenant(String tenantId);

    void generateSalaryRecordNew(Integer type, List<Integer> employeeId, String date,Integer hsType);

    BigDecimal selectByWorkHours(DingAttendanceClasses dingAttendanceClasses);

    JSONObject selectRecordListInfo(JSONObject jsonObject);


    JSONObject selectRecordUpdateListInfo(JSONObject jsonObject);

    JSONObject selectRecordUpdateListInfoBYDA(JSONObject jsonObject);


    List<JSONObject> selectRecordList(JSONObject param);


    List<JSONObject> updateRecordInfo(JSONObject jsonObject);

    JSONObject selectConfirmTable(Integer id);

    Integer updateConfirm(JSONObject jsonObject);

    List<JSONObject> selectConfirmRecordListInfo(JSONObject param);

    JSONObject selectConfirmInfoList(JSONObject param);

    PageInfo selectByConfirmPage(Integer employeeId, Integer pageNum, Integer pageSize);

    Integer sendConfirm(Integer ids);

    Integer withdraw(Integer ids);

    Integer allSendConfirm(Integer recordId);

    Integer allWithdraw(Integer recordId);

    JSONObject selectEmployeeConfirmInfo(Integer id);

    List<JSONObject> historySalaryList(String date);

    JSONObject historySalaryInfo(JSONObject jsonObject);

    Integer updateRemark(String remark, Integer id);


    Integer removeSalary(Integer recordId);

    JSONObject selectList();

    Integer confirm(Integer id, Integer status, String message);


    Integer checkStatus(Integer id);

    List<JSONObject> selectNotSalaryEmployeeList(List<Integer> employeeIds);

    List<JSONObject> selectNotDingTeamEmployeeList(List<Integer> employeeIds);


    List<JSONObject> selectNotDingUserEmployeeIdList();

    JSONObject selectByNotSalary(List<Integer> employeeIds, String month,Integer isSystem);


    Integer selectByAttendanceErrorEmployeeCount(String startTime, String endTime);


    List<JSONObject> selectYcDingSelect();


    List<JSONObject> selectByAttendanceErrorEmployee(String startTime, String endTime);

    List<JSONObject> selectByAttendanceErrorEmployeeInfo(String startTime, String endTime, Integer employeeId);


    Integer handlingDingExceptions(JSONObject jsonObject);
}
